package com.yx.study.leet.questionList.questionTwo;

import org.junit.Test;

/**
 * 67. 二进制求和
 * https://leetcode.cn/problems/add-binary/description/
 * */
public class Solution67 {
    public String addBinary(String a, String b) {
        StringBuilder ans = new StringBuilder();
        int i = a.length() - 1, j = b.length() - 1; //从最后开始遍历（个位）
        int t = 0;  //进位
        while(i >= 0 || j >= 0 || t != 0) { //如果没有遍历完两个数，或者还有进位
            if(i >= 0) t += a.charAt(i--) - '0';    //如果a还有数
            if(j >= 0) t += b.charAt(j--) - '0';    //如果b还有数
            ans.append(t % 2);  //加入当前位的和取模
            t /= 2; //进位
        }
        return ans.reverse().toString();    //由于计算之后是个位在第一位，所以要反转
    }

    @Test
    public void test(){
        String a= "11";
        String b = "1";
        System.out.println(addBinary(a, b));
    }
}
